!(function (e) {
  if ("object" == typeof exports && "undefined" != typeof module)
    module.exports = e();
  else if ("function" == typeof define && define.amd) define([], e);
  else {
    ("undefined" != typeof window
      ? window
      : "undefined" != typeof global
      ? global
      : "undefined" != typeof self
      ? self
      : this
    ).Qs = e();
  }
})(function () {
  return (function e(r, t, o) {
    function n(a, l) {
      if (!t[a]) {
        if (!r[a]) {
          var c = "function" == typeof require && require;
          if (!l && c) return c(a, !0);
          if (i) return i(a, !0);
          var f = new Error("Cannot find module '" + a + "'");
          throw ((f.code = "MODULE_NOT_FOUND"), f);
        }
        var s = (t[a] = { exports: {} });
        r[a][0].call(
          s.exports,
          function (e) {
            var t = r[a][1][e];
            return n(t || e);
          },
          s,
          s.exports,
          e,
          r,
          t,
          o
        );
      }
      return t[a].exports;
    }
    for (
      var i = "function" == typeof require && require, a = 0;
      a < o.length;
      a++
    )
      n(o[a]);
    return n;
  })(
    {
      1: [
        function (e, r, t) {
          "use strict";
          var o = String.prototype.replace,
            n = /%20/g;
          r.exports = {
            default: "RFC3986",
            formatters: {
              RFC1738: function (e) {
                return o.call(e, n, "+");
              },
              RFC3986: function (e) {
                return e;
              },
            },
            RFC1738: "RFC1738",
            RFC3986: "RFC3986",
          };
        },
        {},
      ],
      2: [
        function (e, r, t) {
          "use strict";
          var o = e("./stringify"),
            n = e("./parse"),
            i = e("./formats");
          r.exports = { formats: i, parse: n, stringify: o };
        },
        { "./formats": 1, "./parse": 3, "./stringify": 4 },
      ],
      3: [
        function (e, r, t) {
          "use strict";
          var o = e("./utils"),
            n = Object.prototype.hasOwnProperty,
            i = {
              allowDots: !1,
              allowPrototypes: !1,
              arrayLimit: 20,
              decoder: o.decode,
              delimiter: "&",
              depth: 5,
              parameterLimit: 1e3,
              plainObjects: !1,
              strictNullHandling: !1,
            },
            a = function (e, r) {
              for (
                var t = {},
                  o = r.ignoreQueryPrefix ? e.replace(/^\?/, "") : e,
                  a = r.parameterLimit === 1 / 0 ? void 0 : r.parameterLimit,
                  l = o.split(r.delimiter, a),
                  c = 0;
                c < l.length;
                ++c
              ) {
                var f,
                  s,
                  u = l[c],
                  p = u.indexOf("]="),
                  d = -1 === p ? u.indexOf("=") : p + 1;
                -1 === d
                  ? ((f = r.decoder(u, i.decoder)),
                    (s = r.strictNullHandling ? null : ""))
                  : ((f = r.decoder(u.slice(0, d), i.decoder)),
                    (s = r.decoder(u.slice(d + 1), i.decoder))),
                  n.call(t, f)
                    ? (t[f] = [].concat(t[f]).concat(s))
                    : (t[f] = s);
              }
              return t;
            },
            l = function (e, r, t) {
              for (var o = r, n = e.length - 1; n >= 0; --n) {
                var i,
                  a = e[n];
                if ("[]" === a) i = (i = []).concat(o);
                else {
                  i = t.plainObjects ? Object.create(null) : {};
                  var l =
                      "[" === a.charAt(0) && "]" === a.charAt(a.length - 1)
                        ? a.slice(1, -1)
                        : a,
                    c = parseInt(l, 10);
                  !isNaN(c) &&
                  a !== l &&
                  String(c) === l &&
                  c >= 0 &&
                  t.parseArrays &&
                  c <= t.arrayLimit
                    ? ((i = [])[c] = o)
                    : (i[l] = o);
                }
                o = i;
              }
              return o;
            },
            c = function (e, r, t) {
              if (e) {
                var o = t.allowDots ? e.replace(/\.([^.[]+)/g, "[$1]") : e,
                  i = /(\[[^[\]]*])/g,
                  a = /(\[[^[\]]*])/.exec(o),
                  c = a ? o.slice(0, a.index) : o,
                  f = [];
                if (c) {
                  if (
                    !t.plainObjects &&
                    n.call(Object.prototype, c) &&
                    !t.allowPrototypes
                  )
                    return;
                  f.push(c);
                }
                for (var s = 0; null !== (a = i.exec(o)) && s < t.depth; ) {
                  if (
                    ((s += 1),
                    !t.plainObjects &&
                      n.call(Object.prototype, a[1].slice(1, -1)) &&
                      !t.allowPrototypes)
                  )
                    return;
                  f.push(a[1]);
                }
                return a && f.push("[" + o.slice(a.index) + "]"), l(f, r, t);
              }
            };
          r.exports = function (e, r) {
            var t = r ? o.assign({}, r) : {};
            if (
              null !== t.decoder &&
              void 0 !== t.decoder &&
              "function" != typeof t.decoder
            )
              throw new TypeError("Decoder has to be a function.");
            if (
              ((t.ignoreQueryPrefix = !0 === t.ignoreQueryPrefix),
              (t.delimiter =
                "string" == typeof t.delimiter || o.isRegExp(t.delimiter)
                  ? t.delimiter
                  : i.delimiter),
              (t.depth = "number" == typeof t.depth ? t.depth : i.depth),
              (t.arrayLimit =
                "number" == typeof t.arrayLimit ? t.arrayLimit : i.arrayLimit),
              (t.parseArrays = !1 !== t.parseArrays),
              (t.decoder =
                "function" == typeof t.decoder ? t.decoder : i.decoder),
              (t.allowDots =
                "boolean" == typeof t.allowDots ? t.allowDots : i.allowDots),
              (t.plainObjects =
                "boolean" == typeof t.plainObjects
                  ? t.plainObjects
                  : i.plainObjects),
              (t.allowPrototypes =
                "boolean" == typeof t.allowPrototypes
                  ? t.allowPrototypes
                  : i.allowPrototypes),
              (t.parameterLimit =
                "number" == typeof t.parameterLimit
                  ? t.parameterLimit
                  : i.parameterLimit),
              (t.strictNullHandling =
                "boolean" == typeof t.strictNullHandling
                  ? t.strictNullHandling
                  : i.strictNullHandling),
              "" === e || null === e || void 0 === e)
            )
              return t.plainObjects ? Object.create(null) : {};
            for (
              var n = "string" == typeof e ? a(e, t) : e,
                l = t.plainObjects ? Object.create(null) : {},
                f = Object.keys(n),
                s = 0;
              s < f.length;
              ++s
            ) {
              var u = f[s],
                p = c(u, n[u], t);
              l = o.merge(l, p, t);
            }
            return o.compact(l);
          };
        },
        { "./utils": 5 },
      ],
      4: [
        function (e, r, t) {
          "use strict";
          var o = e("./utils"),
            n = e("./formats"),
            i = {
              brackets: function (e) {
                return e + "[]";
              },
              indices: function (e, r) {
                return e + "[" + r + "]";
              },
              repeat: function (e) {
                return e;
              },
            },
            a = Date.prototype.toISOString,
            l = {
              delimiter: "&",
              encode: !0,
              encoder: o.encode,
              encodeValuesOnly: !1,
              serializeDate: function (e) {
                return a.call(e);
              },
              skipNulls: !1,
              strictNullHandling: !1,
            },
            c = function e(r, t, n, i, a, c, f, s, u, p, d, y) {
              var b = r;
              if ("function" == typeof f) b = f(t, b);
              else if (b instanceof Date) b = p(b);
              else if (null === b) {
                if (i) return c && !y ? c(t, l.encoder) : t;
                b = "";
              }
              if (
                "string" == typeof b ||
                "number" == typeof b ||
                "boolean" == typeof b ||
                o.isBuffer(b)
              )
                return c
                  ? [d(y ? t : c(t, l.encoder)) + "=" + d(c(b, l.encoder))]
                  : [d(t) + "=" + d(String(b))];
              var m = [];
              if (void 0 === b) return m;
              var v;
              if (Array.isArray(f)) v = f;
              else {
                var g = Object.keys(b);
                v = s ? g.sort(s) : g;
              }
              for (var h = 0; h < v.length; ++h) {
                var j = v[h];
                (a && null === b[j]) ||
                  (m = Array.isArray(b)
                    ? m.concat(e(b[j], n(t, j), n, i, a, c, f, s, u, p, d, y))
                    : m.concat(
                        e(
                          b[j],
                          t + (u ? "." + j : "[" + j + "]"),
                          n,
                          i,
                          a,
                          c,
                          f,
                          s,
                          u,
                          p,
                          d,
                          y
                        )
                      ));
              }
              return m;
            };
          r.exports = function (e, r) {
            var t = e,
              a = r ? o.assign({}, r) : {};
            if (
              null !== a.encoder &&
              void 0 !== a.encoder &&
              "function" != typeof a.encoder
            )
              throw new TypeError("Encoder has to be a function.");
            var f = void 0 === a.delimiter ? l.delimiter : a.delimiter,
              s =
                "boolean" == typeof a.strictNullHandling
                  ? a.strictNullHandling
                  : l.strictNullHandling,
              u = "boolean" == typeof a.skipNulls ? a.skipNulls : l.skipNulls,
              p = "boolean" == typeof a.encode ? a.encode : l.encode,
              d = "function" == typeof a.encoder ? a.encoder : l.encoder,
              y = "function" == typeof a.sort ? a.sort : null,
              b = void 0 !== a.allowDots && a.allowDots,
              m =
                "function" == typeof a.serializeDate
                  ? a.serializeDate
                  : l.serializeDate,
              v =
                "boolean" == typeof a.encodeValuesOnly
                  ? a.encodeValuesOnly
                  : l.encodeValuesOnly;
            if (void 0 === a.format) a.format = n.default;
            else if (
              !Object.prototype.hasOwnProperty.call(n.formatters, a.format)
            )
              throw new TypeError("Unknown format option provided.");
            var g,
              h,
              j = n.formatters[a.format];
            "function" == typeof a.filter
              ? (t = (h = a.filter)("", t))
              : Array.isArray(a.filter) && (g = h = a.filter);
            var O = [];
            if ("object" != typeof t || null === t) return "";
            var w;
            w =
              a.arrayFormat in i
                ? a.arrayFormat
                : "indices" in a
                ? a.indices
                  ? "indices"
                  : "repeat"
                : "indices";
            var A = i[w];
            g || (g = Object.keys(t)), y && g.sort(y);
            for (var x = 0; x < g.length; ++x) {
              var N = g[x];
              (u && null === t[N]) ||
                (O = O.concat(
                  c(t[N], N, A, s, u, p ? d : null, h, y, b, m, j, v)
                ));
            }
            var D = O.join(f),
              P = !0 === a.addQueryPrefix ? "?" : "";
            return D.length > 0 ? P + D : "";
          };
        },
        { "./formats": 1, "./utils": 5 },
      ],
      5: [
        function (e, r, t) {
          "use strict";
          var o = Object.prototype.hasOwnProperty,
            n = (function () {
              for (var e = [], r = 0; r < 256; ++r)
                e.push(
                  "%" + ((r < 16 ? "0" : "") + r.toString(16)).toUpperCase()
                );
              return e;
            })(),
            i = function (e) {
              for (var r; e.length; ) {
                var t = e.pop();
                if (((r = t.obj[t.prop]), Array.isArray(r))) {
                  for (var o = [], n = 0; n < r.length; ++n)
                    void 0 !== r[n] && o.push(r[n]);
                  t.obj[t.prop] = o;
                }
              }
              return r;
            };
          (t.arrayToObject = function (e, r) {
            for (
              var t = r && r.plainObjects ? Object.create(null) : {}, o = 0;
              o < e.length;
              ++o
            )
              void 0 !== e[o] && (t[o] = e[o]);
            return t;
          }),
            (t.merge = function (e, r, n) {
              if (!r) return e;
              if ("object" != typeof r) {
                if (Array.isArray(e)) e.push(r);
                else {
                  if ("object" != typeof e) return [e, r];
                  (n.plainObjects ||
                    n.allowPrototypes ||
                    !o.call(Object.prototype, r)) &&
                    (e[r] = !0);
                }
                return e;
              }
              if ("object" != typeof e) return [e].concat(r);
              var i = e;
              return (
                Array.isArray(e) &&
                  !Array.isArray(r) &&
                  (i = t.arrayToObject(e, n)),
                Array.isArray(e) && Array.isArray(r)
                  ? (r.forEach(function (r, i) {
                      o.call(e, i)
                        ? e[i] && "object" == typeof e[i]
                          ? (e[i] = t.merge(e[i], r, n))
                          : e.push(r)
                        : (e[i] = r);
                    }),
                    e)
                  : Object.keys(r).reduce(function (e, i) {
                      var a = r[i];
                      return (
                        o.call(e, i)
                          ? (e[i] = t.merge(e[i], a, n))
                          : (e[i] = a),
                        e
                      );
                    }, i)
              );
            }),
            (t.assign = function (e, r) {
              return Object.keys(r).reduce(function (e, t) {
                return (e[t] = r[t]), e;
              }, e);
            }),
            (t.decode = function (e) {
              try {
                return decodeURIComponent(e.replace(/\+/g, " "));
              } catch (r) {
                return e;
              }
            }),
            (t.encode = function (e) {
              if (0 === e.length) return e;
              for (
                var r = "string" == typeof e ? e : String(e), t = "", o = 0;
                o < r.length;
                ++o
              ) {
                var i = r.charCodeAt(o);
                45 === i ||
                46 === i ||
                95 === i ||
                126 === i ||
                (i >= 48 && i <= 57) ||
                (i >= 65 && i <= 90) ||
                (i >= 97 && i <= 122)
                  ? (t += r.charAt(o))
                  : i < 128
                  ? (t += n[i])
                  : i < 2048
                  ? (t += n[192 | (i >> 6)] + n[128 | (63 & i)])
                  : i < 55296 || i >= 57344
                  ? (t +=
                      n[224 | (i >> 12)] +
                      n[128 | ((i >> 6) & 63)] +
                      n[128 | (63 & i)])
                  : ((o += 1),
                    (i =
                      65536 + (((1023 & i) << 10) | (1023 & r.charCodeAt(o)))),
                    (t +=
                      n[240 | (i >> 18)] +
                      n[128 | ((i >> 12) & 63)] +
                      n[128 | ((i >> 6) & 63)] +
                      n[128 | (63 & i)]));
              }
              return t;
            }),
            (t.compact = function (e) {
              for (
                var r = [{ obj: { o: e }, prop: "o" }], t = [], o = 0;
                o < r.length;
                ++o
              )
                for (
                  var n = r[o], a = n.obj[n.prop], l = Object.keys(a), c = 0;
                  c < l.length;
                  ++c
                ) {
                  var f = l[c],
                    s = a[f];
                  "object" == typeof s &&
                    null !== s &&
                    -1 === t.indexOf(s) &&
                    (r.push({ obj: a, prop: f }), t.push(s));
                }
              return i(r);
            }),
            (t.isRegExp = function (e) {
              return "[object RegExp]" === Object.prototype.toString.call(e);
            }),
            (t.isBuffer = function (e) {
              return (
                null !== e &&
                void 0 !== e &&
                !!(
                  e.constructor &&
                  e.constructor.isBuffer &&
                  e.constructor.isBuffer(e)
                )
              );
            });
        },
        {},
      ],
    },
    {},
    [2]
  )(2);
});
